Universo Online
Web Sites Pessoais

Anterior Próximo Índice

Criando um programa .COM a partir de arquivo-objeto

Você às vezes pode querer ligar vários arquivos objetos em um programa .COM, usando um LINKER. Isso só é possível se você usar nomes de segmentos e agrupá-los com a diretiva GROUP. Um programa .COM não usa segmento de pilha. Nesses arquivos você não pode usar a diretiva ORG 0x100, mas, em vez disso, inicia o código reservando 0x100 bytes com a diretiva RESB, e começando o programa como se ele fosse um programa .EXE, ou seja, a partir do rótulo ..start:

; Arquivo: PGCOM3.ASM
; Exemplo de programa .COM gerado a partir de arquivos
; objeto.
; Para produzir PGCOM3.OBJ use
;                  nasm -fobj pgcom3.asm
;
; Para produzir o executavel PGCOM3.COM você deve primeiro criar o arquivo objeto, e
; depois ligar com um LINKER.
; Você pode usar qualquer LINKER (Tlink, Link, Alink, etc.):
;
;         1) com ALINK, use:
;               alink pgcom3 -oCOM
;
;         2) com o Tlink (turbo linker) use:
;               tlink /t pgcom3;
;
;         3) Com versoes mais atuais do LINK da Microsoft:
;            link /TINY pgcom3;
;
;         4) Com versoes antigas do LINK (MASM 4.0 por exemplo)
;            link pgcom3;
;            exe2bin  pgcom3  pgcom3.com
;            del pgcom3.exe     
;
; Vantagens de um programa .COM gerado de arquivo objeto:
;
;   1) Voce pode separar codigo de dados de modo claro
;      e consistente;
;   2) Voce pode usar rotinas externas em outros arquivos objeto
;      usando a diretiva extern.

       group JUNTE CODIGO DADOS

       segment CODIGO class=CODE
            
                   resb 0x100

       ..start:
                 MOV DX, MENSAGEM
                 MOV AH,9
                 INT 0x21
 
                 MOV AH,0x4c00
                 int 0X21

        segment DADOS class=DATA
              MENSAGEM DB "Essa é uma mensagem...", '$'
Um programa .COM usa os primeiros 256 bytes para reserver espaço ao Prefixo de Segmento do Programa. O DOS usa esse espaço para passar informações importantes ao Programa, entre elas a linha de comando que o usuário digita no PROMPT de comandos após o nome do programa executável. Essa é a razão da diretiva ORG 0x100.

Anterior Próximo Índice